package com.lyon.custom.server.service;

import com.lyon.custom.api.model.ConfigPublishReqVO;
import com.lyon.custom.server.common.notify.NotifyCenter;
import com.lyon.custom.server.common.notify.data.LocalDataChangeEvent;
import org.springframework.stereotype.Service;

/**
 * @author LeeYan9
 * @since 2021-11-30
 */
@Service
public class PersistenceService {

    /**
     * 保存数据库数据,发布本地配置变更事件;
     *
     * @param configPublishReqVO
     */
    public void insertOrUpdate(ConfigPublishReqVO configPublishReqVO) {
        String dataId = configPublishReqVO.getDataId();
        String tenantId = configPublishReqVO.getTenantId();
        String group = configPublishReqVO.getGroup();
        String content = configPublishReqVO.getContent();
        String type = configPublishReqVO.getType();
        // 保存数据库数据; ...TODO

        // 持久化磁盘配置数据 dump
        ConfigCacheService.dump(dataId,group,tenantId,content,type);
        // 发布本地配置更改事件,通知客户端
        NotifyCenter.publishEvent(new LocalDataChangeEvent(configPublishReqVO));
        // 发布本地配置更改日志记录事件
    }

}
